1
Processus étatiques et optimisation des appels de queue
AI019Lesson 7
00:00

En Elixir, les processus sont généralement éphémères par défaut ; dès qu'une fonction se termine, le processus s'arrête. Pour créer un processus persistant et étatique, nous utilisons la récursion pour maintenir le processus actif dans une boucle.

1. Optimisation des appels de queue (TCO)

Si l'action finale absolue d'une fonction est de s'appeler elle-même, la machine virtuelle Erlang (BEAM) effectue l'optimisation des appels de queue. Au lieu d'ajouter un nouvel élément à la pile, elle se contente de revenir au début de la fonction avec de nouveaux arguments.

def factorial(n, acc), do: _fact(n-1, acc*n) # TCO
def factorial(n), do: n * factorial(n-1) # PAS TCO
logique de greet()appel de greet()TCO : Réutilisation du cadre de pile

2. État persistant

L'état est maintenu en passant des valeurs mises à jour comme arguments à l'appel récursif. Grâce à la TCO, ces arguments remplacent les paramètres initiaux sur la pile sans consommer de mémoire supplémentaire, permettant ainsi aux boucles de s'exécuter indéfiniment.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>